package com.higgins.eventtracking.client.projectmanagement;

import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;

/**
 * The client side stub for the RPC service.
 */
@RemoteServiceRelativePath("project")
public interface ProjectService extends RemoteService {
	List<ProjectItemDTO> retrieveProjectItems(Long parentId) throws IllegalArgumentException;
	List<Long> retrieveParentIds(Long parentId) throws IllegalArgumentException;
	Long insetProjectItem(ProjectItemDTO item) throws IllegalArgumentException;
	Long updateProjectItemTask(Long id, String task, Long parentId) throws IllegalArgumentException;
	Long updateProjectItemForecast(Long id, Double forecast, Long parentId) throws IllegalArgumentException;
	Long updateProjectItemComplete(Long id, Double complete, Long parentId) throws IllegalArgumentException;
	List<Long> updateProjectItemPriority(Long idOne, Integer priorityOne, Long idTwo, Integer priorityTwo, Long parentId) throws IllegalArgumentException;
	Boolean deleteProjectItem(Long id) throws IllegalArgumentException;
	Boolean startTimer(Long id) throws IllegalArgumentException;
	Boolean stopTimer(Long id) throws IllegalArgumentException;
	Long isActive(Long id) throws IllegalArgumentException;
	List<HistoryItemDTO> retrieveHistory(String date, Boolean showAllEvents, Boolean showDistinctList) throws IllegalArgumentException;
	List<String> retrieveImmediate() throws IllegalArgumentException;
	List<String> retrieveFollowUp() throws IllegalArgumentException;
	String retrieveTodaysSimpleFormatDate() throws IllegalArgumentException;
	Boolean setPermanent(Long id) throws IllegalArgumentException;
	Boolean setNotPermanent(Long id) throws IllegalArgumentException;
	Boolean setImmediate(Long id) throws IllegalArgumentException;
	Boolean setNotImmediate(Long id) throws IllegalArgumentException;
	Boolean setFollowUp(Long id) throws IllegalArgumentException;
	Boolean setNotFollowUp(Long id) throws IllegalArgumentException;
	Long updateFollowUpDate(Long id, String followUpDate)	throws IllegalArgumentException;
	Long updateStartTimestamp(Long id, Date startTimestamp)	throws IllegalArgumentException;
	Long updateEndTimestamp(Long id, Date endTimestamp)	throws IllegalArgumentException;
	Boolean checkAccess() throws IllegalArgumentException;
	
}
